iT邦幫忙

2023 iThome 鐵人賽

DAY 2
1
自我挑戰組

Concurrency in go 讀書心得系列 第 2

2.Concurrency ? Parallelism?

  • 分享至 

  • xImage
  •  

Concurrency 與 Parallelism 的深入探討:從差異到應用

我們常常聽到兩個詞:Concurrency(併發)與 Parallelism(平行)。儘管這兩個詞語經常被交替使用,但它們代表的概念是有所不同的。理解這兩者的差異不僅有助於技術深入,還有助於我們在設計和開發時做出明智的選擇。本文將試圖剖析這兩者的核心差異,並提供一些應用的例子。

1. Concurrency(併發)

Concurrency主要關心的是多個任務可以在同一時間段內被啟動或完成,但並不意味著這些任務是同時執行的。它是一種如何結構化程序、算法,以便有效地處理多件事情,這些事情可能(但不必)在同一時間發生。

舉個例子,一位雜技演員正在同時擲多個球,儘管每次只接觸一個球,但對觀眾來說,似乎球都在「同時」被擲。這就是concurrency的概念:雖然一次只處理一件事,但在整個過程中處理了多件事情。

2. Parallelism(平行)

平行則是指多個任務或計算過程在同一時刻真正同時進行。這通常需要多個處理器或核心,或者是分佈式的系統。

再次以例子來說明:想象一個跑道,有四名運動員同時起跑,他們同時向終點前進。這是真正的「同時」,每個運動員的跑動都是同時發生的,而不是輪流。

併發與平行的關聯

這兩者之間的關係是密不可分的。併發可以在單核系統中實現,切換上下文以模擬多個任務「似乎」同時運行。然而,當有多核或多處理器可用時,併發任務也可能平行運行。

舉例說明,當我們開啟多個網頁標籤時,這些標籤可能是併發加載的,但若我們的系統有多個核心,則可能會有多個標籤同時加載,達到平行。

結論

Concurrency 和 Parallelism 雖然有所區別,但它們共同的目的是提高效率和性能。理解它們的差異以及如何適當地應用它們,可以幫助我們設計出更加高效和響應迅速的系統和應用程序。當我們說某系統支援併發時,它可能不真正做到「同時」的執行;但當說到平行時,它真的做到了多個操作的同時進行。


上一篇
1.參賽前言
下一篇
3.Race Condition, Atomicity, Memory Access Synchronization
系列文
Concurrency in go 讀書心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
雷N
iT邦研究生 1 級 ‧ 2023-09-16 23:50:41

好書

我要留言

立即登入留言